<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="lib.css" type='text/css' />
<link rel="SHORTCUT ICON" href="../icons/pyfav.png" type="image/png" />
<link rel='start' href='../index.html' title='Python documentation Index' />
<link rel="first" href="lib.html" title='Python library Reference' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="next" href="module-traceback.html" />
<link rel="prev" href="module-contextlib.html" />
<link rel="parent" href="python.html" />
<link rel="next" href="atexit-example.html" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name='aesop' content='information' />
<title>26.6 atexit -- Exit handlers</title>
</head>
<body>
<div class="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="26.5 contextlib  "
  href="module-contextlib.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="26. python Runtime Services"
  href="python.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="26.6.1 atexit Example"
  href="atexit-example.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="module-contextlib.html">26.5 contextlib  </a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="python.html">26. Python Runtime Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="atexit-example.html">26.6.1 atexit Example</a>
</div>
<hr /></div>
</div>
<!--End of Navigation Panel-->

<h1><a name="SECTION0028600000000000000000">
26.6 <tt class="module">atexit</tt> --
         Exit handlers</a>
</h1>

<p>
<a name="module-atexit"></a>

<p>

<span class="versionnote">New in version 2.0.</span>

<p>
The <tt class="module">atexit</tt> module defines a single function to register
cleanup functions.  Functions thus registered are automatically
executed upon normal interpreter termination.

<p>
Note: the functions registered via this module are not called when the program is killed by a
signal, when a Python fatal internal error is detected, or when
<tt class="function">os._exit()</tt> is called.

<p>
This is an alternate interface to the functionality provided by the
<code>sys.exitfunc</code> variable.
<a id='l2h-5217' xml:id='l2h-5217'></a>
<p>
Note: This module is unlikely to work correctly when used with other code
that sets <code>sys.exitfunc</code>.  In particular, other core Python modules are
free to use <tt class="module">atexit</tt> without the programmer's knowledge.  Authors who
use <code>sys.exitfunc</code> should convert their code to use
<tt class="module">atexit</tt> instead.  The simplest way to convert code that sets
<code>sys.exitfunc</code> is to import <tt class="module">atexit</tt> and register the function
that had been bound to <code>sys.exitfunc</code>.

<p>
<dl><dt><table cellpadding="0" cellspacing="0"><tr valign="baseline">
  <td><nobr><b><tt id='l2h-5218' xml:id='l2h-5218' class="function">register</tt></b>(</nobr></td>
  <td><var>func</var><big>[</big><var>, *args</var><big>[</big><var>, **kargs</var><big>]</big><var></var><big>]</big><var></var>)</td></tr></table></dt>
<dd>
Register <var>func</var> as a function to be executed at termination.  Any
optional arguments that are to be passed to <var>func</var> must be passed
as arguments to <tt class="function">register()</tt>.

<p>
At normal program termination (for instance, if
<tt class="function">sys.exit()</tt> is called or the main module's execution
completes), all functions registered are called in last in, first out
order.  The assumption is that lower level modules will normally be
imported before higher level modules and thus must be cleaned up
later.

<p>
If an exception is raised during execution of the exit handlers, a
traceback is printed (unless <tt class="exception">SystemExit</tt> is raised) and the
exception information is saved.  After all exit handlers have had a
chance to run the last exception to be raised is re-raised.
</dl>

<p>
<div class="seealso">
  <p class="heading">See Also:</p>

  <dl compact="compact" class="seemodule">
    <dt>Module <b><tt class="module"><a href="module-readline.html">readline</a></tt>:</b>
    <dd>Useful example of <tt class="module">atexit</tt> to read and
                       write <tt class="module"><a href="module-readline.html">readline</a></tt> history files.
  </dl>
</div>

<p>

<p><br /></p><hr class='online-navigation' />
<div class='online-navigation'>
<!--Table of Child-Links-->
<a name="CHILD_LINKS"><strong>Subsections</strong></a>

<ul class="ChildLinks">
<li><a href="atexit-example.html">26.6.1 <tt class="module">atexit</tt> Example</a>
</ul>
<!--End of Table of Child-Links-->
</div>

<div class="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="26.5 contextlib  "
  href="module-contextlib.html"><img src='../icons/previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></a></td>
<td class='online-navigation'><a rel="parent" title="26. python Runtime Services"
  href="python.html"><img src='../icons/up.png'
  border='0' height='32'  alt='Up one Level' width='32' /></a></td>
<td class='online-navigation'><a rel="next" title="26.6.1 atexit Example"
  href="atexit-example.html"><img src='../icons/next.png'
  border='0' height='32'  alt='Next Page' width='32' /></a></td>
<td align="center" width="100%">Python Library Reference</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='../icons/contents.png'
  border='0' height='32'  alt='Contents' width='32' /></a></td>
<td class='online-navigation'><a href="modindex.html" title="Module Index"><img src='../icons/modules.png'
  border='0' height='32'  alt='Module Index' width='32' /></a></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='../icons/index.png'
  border='0' height='32'  alt='Index' width='32' /></a></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="module-contextlib.html">26.5 contextlib  </a>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="python.html">26. Python Runtime Services</a>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="atexit-example.html">26.6.1 atexit Example</a>
</div>
</div>
<hr />
<span class="release-info">Release 2.5.1, documentation updated on 18th April, 2007.</span>
</div>
<!--End of Navigation Panel-->
<address>
See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.
</address>
</body>
</html>
